/**
 * 用 GPIO 口模拟 SPI 接口驱动
 */
 
#pragma once

#include <stdint.h>
#include "mcu.h"

/// 接口驱动
typedef struct {
	func_gpio_write_out_t csn;
	func_gpio_write_out_t sclk;
	func_gpio_write_out_t mosi;
	func_gpio_read_in_t   miso;
	uint32_t delay_us;
} unidrv_simspi_t;

/// @brief 模拟 SPI 收发 1 个字节
/// @attention 注意：调用此函数前应拉低 CSn !!!
uint8_t unidrv_simspi_trx1(unidrv_simspi_t *dev, uint8_t ch);

/// @brief 模拟 SPI 收发 n 个字节
std_err_t unidrv_simspi_trx(unidrv_simspi_t *dev, uint8_t *tx, uint8_t *rx, size_t nbyte);
